CONSOLE_IOCTLS(4) | 리눅스 프로그래머 메뉴얼 | CONSOLE_IOCTLS(4) |
이름¶
console ioctl - 콘솔 터미널과 가상 터미널을 위해 입출력제어를 한다.
설명¶
WARNING: 다음 정보를 사용하는것은 무의미 하다.
WARNING: 입출력제어에 관한 내용은 문서화 되지 않아 공지없이 바뀌기 쉽다. POSIX함수를 사용한다.
- KDGETLED
- argp LEDs의 상태를
얻는다. argp는 long int를
가리킨다. argp의
저수준의 세개비트는
아래와 같은 LEDs의
상태로 설정된다:
LED_CAP 0x04 caps lock led
LEC_NUM 0x02 num lock led
LED_SCR 0x01 scroll lock led - KDSETLED
- LEDs설정. LEDs는 argp의 세 비트보다 낮게 설정된다. 그러나, 비트를 높게 설정 한다면 LEDs는 표준으로 전환된다: caps lock,num lock, scroll lock 키보드기능의 디스플레이 상태.
버전 1.1.54이전의 LEDs는 단지 일치하는 키보드 플래그의 상태를 반영한다. 그리고 KDGTLED/KDSTLED는 또한 키보드 플래그를 바꾼다. 버전1.1.54부터 LEDs는 상황에 따라 디스클레이를 조절한다. 그러나 기본값에 의해 leds는 키보드플래그를 디스플레이한다. 다음 두개의 입출력제어는 키보드플래그 에 액세스하는데 사용된다.
- KDGKBLED
- capsLock, NumLock,ScrollLock와 같은 키보드 플래그를 취한다. argp는 플래그상태를 설정하는 char를 가리킨다. 저수준 지정 비트(mask 0x7)는 현재 플래그 상태를 취하고, 나머지는 기본 플래그 상태를 취한다.
- KDSKBLED
- CapsLock, NumLock, ScrollLock같은 키보드플래그를 설정한다. argp는 원하는 플래그 상태를 갖는다. 저수준 지정 비트는 현재 플래그 상태를 취하고, 나머지는 기본 플래그 상태를 취한다.
- KDGKBTYPE
- 키보드 타입을 취한다. 이것은 0x02로 정의되는 KB_101값을 반환한다.
- KDADDIO
- 유효한 입출력 포트를 추가한다. ioperm(arg,1,1)과 같다.
- KDDELIO
- 유효한 입출력 포트를 삭제한다. ioperm(arg,1,0)과 같다.
- KDENABIO
- 비디오보드로 입출력이 가능하다. ioperm(0x3b4, 0x3df-0x3b4+1,1)과 같다.
- KDDISABIO
- 비디오보드로 입출력이 불가능하다. ioperm(0x3b4, 0x3df-0x3b4+1,0)과 같다.
- KDSETMODE
- 텍스트/그래픽 모드를
설정한다. argp는
다음중 하나다:
KD_TEXT 0x00
KD_GRAPHICS 0x01 - KDGETMODE
- 텍스트/그래픽 모드를 취한다. argp는 위의 값중 하나를 설정하는 long 을 가리킨다.
- KDMKTONE
- 특정 길이의 톤(tone)생성한다. argp의 낮은 16비트는 시간사이클의 기간을 열거하고, 높은 16비트는 msec에 기간을 준다. 기간이 0이면, 소리는 즉시 꺼진다. 제어력 즉시 반환된다.
- KIOCSOUND
- 사운드 생성을 시작하거나 멈춘다. argp의 낮은 16비트는 시간사이클의 기간 을 열거한다.(즉, argp = 1193180/frequency) argp = 0은 소리를 끈다. 같은 경우로, 제어력은 즉시 반환된다.
- GIO_CMAP
- 커널로부터 현재 기본 컬러맵을 얻는다. argp는 48-바이트 배열을 가 리킨다.(버전 1.3.3부터)
- PIO_CMAP
- 기본 텍스트모드 컬러맵을 바꾼다. argp는 16비트컬러를 위한 빨강,녹색, 파랑색값을 포함하는 48-바이트 배열을 가리킨다: 0 is off, and 255 is full intensity. 기본색은 검정, 암적색(dark red), 암녹색(dark green), 갈색, 암청색(dark blue), 밝은 빨강, 밝은 녹색, 노랑, 밝은 파랑, 밝은 자주, 밝은 청록색, 흰색이다.
- GIO_FONT
- 확장된 256-문자 폰트를 취한다. argp는 8192바이트 배열을 가리킨다. 현재 로드된 폰트가 512-문자 폰트이거나 콘솔이 텍스트 모드가 아니라면 EINVAR코드와 함께 작동하지 않는다.
- GIO_FONTX
- 화면폰트와 관련정보를 얻는다. argp는 consolefontdisc을 가리킨다. (PIO_FONTX 참조). 호출시 charcount필드는 문자중 가장큰 수치 로 설정되어야 한다. 반환시, charcount와 charheight는 현재 로드된 폰트를 위한 관련 데이타로 채워져야 한다. 그리고 chardata배열은 charcount의 초기값이 지시하는 충분한 공간이 있다면 폰트데이타를 포함한다. 그렇지 않으면 버퍼는 그대로 있고, errno는 ENOMEM를 설정한다.(버전 1.3.1부터)
- PIO_FONT
- 화면 폰트를 256-문자로 설정한다. EGA/VGA문자생성기로부터 폰트를 로드한다. argp는 문자마다 32바이트인 8192맵을 가리킨다. 단지 그런것들 중 첫 N는 8xN폰트를 위해 사용된다(0 < N <= 32). 이 호출은 또한 유니코드를 쓸모 없게 한다.
- PIO_FONTX
- 스크린 폰트와
관련정보를 설정한다.
argp는
를 가리킨다. 필요하다면, 화면크기는 적절하게 재조정될 것이고, SIGWINCH는 적절한 프로세 스를 보낸다. 이 호출은 또한 유니코드를 쓸모 없게 한다.
consolefontdesc {
u_short charcount; /* characters in font (256 or 512) */
u_short charheight; /* scan lines per character (1-32) */
char *chardata; /* font data in expanded form */ }; - PIO_FONTRESET
- 폰트, 크기, 유니코드를 재설정한다. argp는 사용되지 않지만, 리눅스의 차후버전의 호환을 위해 NULL는 설정되어야 한다.
- GIO_SCRNMAP
- 커널로부터 화면 맵핑을 얻는다. argp는 E_TABSZ의 범위를 가리킨다. 그것은 각 문자 디스플레에 사용되는 폰트 위치와 함께 로드된다. 이 호출 은 로드된 폰트가 256문자 이상이면 쓸모없는 정보를 반환할 것이다.
- PIO_SCRNMAP
- 콘솔 화면 심볼의 맵바이트인 커널의 ``user definable``을 로드한다. argp는 size E_TABSZ의 공간에 포인트한다.
- PIO_UNISCRNMAP
- 유니코드의 맵바이트인 커널의 ``user definable``을 로드한다. ?
- GIO_UNIMAP
- 커널로부터 Unicode-to-font를
구한다. argp는
struct unimapdesc {
u_short entry_ct;
struct unipair *entries; };where entries points to an array of
struct unipair {
를 가리킨다. (Since 1.1.92.)
u_short unicode;
u_short fontpos; }; - PIO_UNIMAPCLR
- hash 알고리즘을 참조해
테이블을 소거한다.
argp는
struct unimapinit {
를 가리킨다. (버전1.1.92부터.)
u_short advised_hashsize; /* 0 if no opinion */
u_short advised_hashstep; /* 0 if no opinion */
u_short advised_hashlevel; /* 0 if no opinion */ }; - KDGKBMODE
- 현재 키보드 모드를
구한다. ARGP는 다음중
하나로 설정된 long을
포인트한다.
K_RAW 0x00
K_XLATE 0x01
K_MEDIUMRAW 0x02
K_UNICODE 0x03 - KDSKBMODE
- 현재 키보드 모드를 설정한다. argp는 위의 값중 하나와 같은 long이다.
- KDGKBMETA
- 메타키 운용모드를
구한다. argp는 다음중
하나를 설정하는 long을
포인트한다.
K_METABIT 0x03 set high order bit
K_ESCPREFIX 0x04 escape prefix - KDSKBMETA
- 메타키 운용모드를 설정한다. argp는 위의 값중 하나와 같은 long이다.
- KDGKBSENT
- 함수키구문을 얻는다.
argp는
struct kbsentry {
를 가리킨다. kb_string는 kb_func함수키 활성코드와 일치하는 구문을 설정한다.
u_char kb_func;
u_char kb_string[512]; }; - KDSKBSENT
- 함수키 문자내용(entry)을 설정한다. argp는 구조체 kbsentry를 가리킨다.
- KDGETKEYCODE
- 커널 키코드 테이블
내용을
읽는다.(키코드로
코드를 스캔한다.
argp는
struct kbkeycode { unsigned int scancode, keycode; };
를 가리킨다. keycode는 주어진 scancode와 일치하게 설정한다. (89 <= scancode <= 255 only. For 1 <= scancode <= 88, keycode==scancode.) (버전1.1.63부터.) - KDSETKEYCODE
- 커널 키코드테이블 기재사항을 기록한다. argp는 구조체 키코드를 포인트한다. (버전1.1.63 부터.)
- KDSIGACCEPT
- 호출한 프로세스들은 적당한 키조합이 프레스에 의해 생성될때, 프로세스에 의해 시그널 argp를 받아들인다. (1 <= argp <= NSIG). (See spawn_console() in linux/drivers/char/keyboard.c.)
- VT_OPENQRY
- 유효한 첫 콘솔을 반환한다. argp는 vt(1 <= *argp <= MAX_NR_CONSOLES)의 번호를 설정한 정수를 포인트한다.
- VT_GETMODE
- 활성화된 vt모드를
구한다. argp는
struct vt_mode {
를 포인트한다. mode는 다음 값중 하나를 설정한다.
char mode; /* vt mode */
char waitv; /* if set, hang on writes if not active */
short relsig; /* signal to raise on release req */
short acqsig; /* signal to raise on acquisition */
short frsig; /* unused (set to 0) */ };
VT_AUTO 자동 vt 스위칭
VT_PROCESS 프로세스 제어 스위칭
VT_ACKACQ acknowledge switch - VT_SETMODE
- 활성화된 vt의 모드를 설정한다. argp는 구조체 vt_mode를 포인트한다.
- VT_GETSTATE
- 전역 vt상태 정보를
구한다. argp는
struct vt_stat {
를 포인트한다.
ushort v_active; /* active vt */
ushort v_signal; /* signal to send */
ushort v_state; /* vt bitmask */ }; - VT_RELDISP
- 디스플레이를 릴리즈한다.
- VT_ACTIVATE
- vt argp를 전환한다(1 <= argp <= MAX_NR_CONSOLES).
- VT_WAITACTIVE
- vt argp가 활성화될때까지 기다린다.
- VT_DISALLOCATE
- vt argp와 일치하는 메모리를 Deallocate the memory associated with vt argp. (Since 1.1.54.)
- VT_RESIZE
- 화면크기의
커널이해(kernel's idea)를
설정한다. argp는
struct vt_sizes {
로 포인트한다.
ushort v_rows; /* # rows */
ushort v_cols; /* # columns */
ushort v_scrollsize; /* no longer used */ };이것으로 비디오모드를 바꿀수 없다는것을 주지한다. resizecons(8) 참조한다. (버전1.1.54부터.)
- VT_RESIZEX
- 다양한
화면매개변수의
커널이해(kernel's idea)를
설정한다. argp
struct vt_consize {
를 포인트한다.
ushort v_rows; /* 열(줄)번호 */
ushort v_cols; /* 행번호 */
ushort v_vlin; /* 화면상의 픽셀열 번호 */
ushort v_clin; /* 문자별 픽셀열 번호 */
ushort v_vcol; /* 화면상의 픽셀행 번호 */
ushort v_ccol; /* 문자별 픽셀행 번호 */ };모든 매개변수는 0으로 설정될런지 모른다. 그러나 복수의 매개변수가 설정된다면 일관되어야만 한다. 이것으로 비디오모드를 바꿀수 없다는 것을 주지한다. resizecons(8)를 참조한다. (버전1.3.3부터.)
다음의 입출력제어들은 argp에 의해 구조체포인트 첫번째 바이트에 의존한다. 이것들은 오로지 수퍼유저나 현재 tty의 소유자만이 가능하다.
- TIOCLINUX, subcode=0
- 화면을 덤프한다. 버전 1.1.92에는 없는 옵션이다.
- TIOCLINUX, subcode=1
- 처리정보를 얻는다. 1.1.92에는 없다.
- TIOCLINUX, subcode=3
- 선택한 것을 붙인다. 선택된 버퍼의 문자는 fd에 기록된다.
- TIOCLINUX, subcode=4
- 화면을 채운다.
- TIOCLINUX, subcode=6
- argp는 커널변수 shift_state의 값을 설정하는 char을 포인트한다. (버전1.1.32부터.)
- TIOCLINUX, subcode=7
- argp는 커널변수 report_mouse의 값을 설정하는 char을 포인트한다. (버전1.1.33부터.)
- TIOCLINUX, subcode=8
- 화면 너비와 높이, 커서 위치, 그리고 모든 문자-속성쌍을 덤프한다. (커널 버전1.1.67 에서1.1.91까지만 쓸 수 있다. 커널 1.1.92 이후 버전에서는 대신 /dev/vcsa*에서 읽을 수있다.)
- TIOCLINUX, subcode=9
- 화면 너비와 높이, 커서 위치, 그리고 모든 문자-속성쌍을 재저장한다. (커널 버전1.1.67 에서1.1.91까지만 쓸 수 있다. 커널 1.1.92 이후 버전에서는 대신 /dev/vcsa*에서 읽을 수있다.)
- TIOCLINUX, subcode=10
- 신세대모니터의
강력한 저장기능을
다룬다. VESA
화면공백모드는
argp[1]를 설정한다.
그것은 화면공백을
다룬다.
0: 화면공백은 불가능하다.
1: 현재 비디오아답터레지스터 설정이 저장된후 제어기는 수직동기화펄스 전환(turn off)을 프로그램한다. 이것은 모니터를 "standby"모드로 한다. 모니터가 타이머 오프모드가 있다면 그것은 결국 자신을 꺼버린다.
2: 현재설정이 저장된후, 수직,수평 동기와 펄스는 꺼진다. 이것은 모니터를 "off"모드로 둔다. 모니터에 타이머 OFF모드가 없거나, 모니터를 즉시 끄고 싶다면 이 옵션을 선택한다. (Caution:는 결국 모니터에 손상을 입힌다.)
(Since 1.1.76.)
반환값¶
에러시 -1을 반환하고, errno는 설정된다.
에러¶
errno는 아래의 값을 가진다:
경고¶
이 맨페이지(Man page)는 리눅스 콘솔 입출력에 관한 문서가 아니다. 이 맨페이지는 소스를 보고싶어하는 사용자의 호기심에 대안으로 제공되는 것이다. 입출력제어는 문서화되지 않았다. 따라서 경고없이 내용이 바뀔 수 있다는것을 주지하기 바란다.
입출력제어는 커널과 잘알려진 프로그램(fdisk, hdparm, setserisl,tunelp, loadkeys, selection, setfont, etc..) 사이의 통신을 위해 자주 소개되고, 입출력제어는 프로그램의 요구에 따라 변화할 것이다.
입출력제어를 사용하는 프로그램은 다른 버전의 유닉스에 포팅할 수 없다. 그리고 이후 버전에서는 사라질 수도 있다.
POSIX함수들을 사용한다.
관련 항목¶
kbd_mode(1), loadkeys(1), dumpkeys(1), mknod(1), setleds(1), setmetamode(1), ioperm(2), termios(2), execve(2), fcntl(2), console(4), console_codes(4), mt(4), sd(4), tty(4), ttys(4), vcs(4), vcsa(4), charsets(7), mapscrn(8), setfont(8), resizecons(8), /usr/include/linux/kd.h, /usr/include/linux/vt.h
1995년 11월 18일 | 리눅스 |